/**
 * 从文件链接中提取扩展名（忽略查询参数和锚点）
 * @param {string} url - 文件链接（如 "https://example.com/image.jpg?width=100"）
 * @returns {string} 扩展名（小写，如 "jpg"）或空字符串（无扩展名）
 */
function getFileExtension(url) {
  if (!url) return '';
  // 去除查询参数（?后面的内容）和锚点（#后面的内容）
  const cleanUrl = url.split('?')[0].split('#')[0];
  // 提取最后一个点之后的内容
  const lastDotIndex = cleanUrl.lastIndexOf('.');
  if (lastDotIndex === -1) return '';
  return cleanUrl.slice(lastDotIndex + 1).toLowerCase();
}

/**
 * 通过扩展名判断文件类型（常见类型映射）
 * @param {string} extension - 扩展名（如 "jpg"）
 * @returns {string} 文件类型（如 "image"、"document"、"unknown"）
 */
function getFileTypeByExtension(extension) {
  const typeMap = {
    image: ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'],
    document: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt'],
    video: ['mp4', 'mov', 'avi', 'mkv', 'flv'],
    audio: ['mp3', 'wav', 'aac', 'flac', 'ogg'],
      archive: ['zip', 'rar', '7z', 'tar', 'gz', 'bz2', 'xz', 'zst', 'tgz']
  };

  for (const [type, exts] of Object.entries(typeMap)) {
    if (exts.includes(extension)) return type;
  }
  return 'unknown';
}

/**
 * 综合判断文件格式（同步版本，仅通过扩展名判断）
 * @param {string} url - 文件链接
 * @returns {object} 判断结果 { extension, type, contentType }
 */
export function detectFileType(url) {
  const extension = getFileExtension(url);
  return {
    extension, // 扩展名（小写）
    type: getFileTypeByExtension(extension), // 通过扩展名判断类型
    contentType: '' // 同步版本无法获取 Content-Type
  };
}

/**
 * 根据文件路径判断文件类型
 * @param {string} filePath 文件路径
 * @returns {string} 文件类型（audio/video/image/document/unknown）
 */
export  function detectFileTypeS(filePath) {
  // 1. 提取扩展名
  const fileName = filePath.split('/').pop();
  const extension = fileName.includes('.')
    ? fileName.split('.').pop().toLowerCase()
    : '';

  // 2. 映射类型
  const typeMap = {
    // 音频
    amr: 'audio',
    mp3: 'audio',
    wav: 'audio',
    // 视频
    mp4: 'video',
    mov: 'video',
    avi: 'video',
    // 图片
    png: 'image',
    jpg: 'image',
    jpeg: 'image',
    gif: 'image',
    webp: 'image',
    // 文档
    pdf: 'document',
    doc: 'document',
    docx: 'document',
    xls: 'document',
    xlsx: 'document',
    ppt: 'document',
    pptx: 'document',
    txt: 'document',
    // 压缩包类型
    zip: 'archive',
    rar: 'archive',
    '7z': 'archive',
    tar: 'archive',
    gz: 'archive',
    bz2: 'archive',
    xz: 'archive',
    zst: 'archive',
    tgz: 'archive'
  };

  return typeMap[extension] || 'unknown';
}
